package com.ambercrm.tools;

import android.text.TextUtils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间工具类
 * Created by ShineF on 2017/8/22 0022.
 */

public class DateUtils {

    private static SimpleDateFormat mFormat;

    /**
     * 时间戳转换
     *
     * @param time 时间戳
     * @return 时间字符串
     */
    public static String getData(String time) {
        String re_StrTime;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        long lcc_time = Long.valueOf(time);
        re_StrTime = sdf.format(new Date(lcc_time));
        return re_StrTime;
    }

    public static String formatByType(String format, Long curTime) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date date = new Date(curTime);
            String time = sdf.format(date);
            return time;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 比较时间前后
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static int compareDate(String startTime, String endTime) {
        // TODO Auto-generated method stub
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            Date dt1 = df.parse(startTime);
            Date dt2 = df.parse(endTime);
            if (startTime.equals(endTime)) {
                return 1;
            } else if (dt1.getTime() > dt2.getTime()) {
                return 1;
            } else {
                return -1;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    //
    public static long compareDateDay(String startTime, String endTime, String format) {

        // 按照传入的格式生成一个simpledateformate对象
        if (!TextUtils.isEmpty(format)) {
            mFormat = new SimpleDateFormat(format);
        } else {
            mFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        }
        long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数
        long nh = 1000 * 60 * 60;// 一小时的毫秒数
        long nm = 1000 * 60;// 一分钟的毫秒数
        long ns = 1000;// 一秒钟的毫秒数
        long diff;
        long day = 0;
        try {
            // 获得两个时间的毫秒时间差异
            diff = mFormat.parse(endTime).getTime()
                    - mFormat.parse(startTime).getTime();
            day = diff / nd;// 计算差多少天
            long hour = diff % nd / nh;// 计算差多少小时
            long min = diff % nd % nh / nm;// 计算差多少分钟
            long sec = diff % nd % nh % nm / ns;// 计算差多少秒
            if (day >= 1) {
                return day;
            }

        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;

    }

    /**
     * 比较时间前后
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public static int compareTheDate(String startTime, String endTime) {
        // TODO Auto-generated method stub
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            Date dt1 = df.parse(startTime);
            Date dt2 = df.parse(endTime);
            if (dt1.getTime() > dt2.getTime()) {
                return 1;
            } else if (dt1.getTime() == dt2.getTime()) {
                return -2;
            } else {
                return -1;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 获取当前系统时间
     * yyyy-MM-dd hh:mm
     *
     * @return 返回 系统时间
     */
    public String getSystemDate() {
        SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        return sDateFormat.format(new Date());
    }
}
